/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.conasinf.sofia.controller;

import com.conasinf.sofia.model.dao.Impl.HorariosTurnoDAOImpl;
import com.conasinf.sofia.model.dao.HorariosTurnoDAO;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ActionEvent;
import com.conasinf.sofia.model.THorariosTurno;
import com.conasinf.sofia.model.TTurnos;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.User;

/**
 *
 * @author jfgomez
 */
@ManagedBean
@SessionScoped
public class HorariosTurnoBean implements Serializable {

    //Variable lista que es una lista de tipo THorariosTurno segun el modelo
    //Variable objSelect que es un objeto del tipo THorariosTurno que recibira el objeto seleccionado en la vista
    private List<THorariosTurno> lista;
    private THorariosTurno objSeleccionado = new THorariosTurno();

    //Inicializa la lista al instanciar la clase    
    public HorariosTurnoBean() {
        this.lista = new ArrayList<>();
        this.objSeleccionado = new THorariosTurno();
        User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
        this.objSeleccionado.setUsuario(user.getUsername());
        this.objSeleccionado.setTTurnos(new TTurnos(0, "", ""));
    }

    /**
     * insert() * inserta un nuevo registro en la base de datos crea un nuevo
     * objeto de tipo DAOImpl asigna id en cero para no enviar nulos a la base
     * de datos asigna el usuario que esta trabajando en sesion
     *
     * @author jfgomez
     * @param actionEvent
     */
    public void insert(ActionEvent actionEvent) {
        HorariosTurnoDAO consulta = new HorariosTurnoDAOImpl();
        this.objSeleccionado.setId(0);
        consulta.save(this.objSeleccionado);
    }

    /**
     * update() * actualiza el registtro seleccionado en la base de datos crea
     * un nuevo objeto de tipo DAOImpl asigna el usuario que esta trabajando en
     * sesion
     *
     * @author jfgomez
     * @param actionEvent
     */
    public void update(ActionEvent actionEvent) {
        HorariosTurnoDAO consulta = new HorariosTurnoDAOImpl();
        consulta.update(this.objSeleccionado);
    }

    /**
     * getLista() * entrega una lista de objetos segun la consulta enviada Crea
     * un nuevo objeto de tipo DAOImpl
     *
     * @author jfgomez
     * @return 
     */
    public List<THorariosTurno> getLista() {
        HorariosTurnoDAO consulta = new HorariosTurnoDAOImpl();
        return consulta.findAll("from THorariosTurno Order by TTurnos.turno, diaSemana");
    }

    public void setLista(List<THorariosTurno> lista) {
        this.lista = lista;
    }

    public THorariosTurno getObjSeleccionado() {
        return objSeleccionado;
    }

    public void setObjSeleccionado(THorariosTurno objSeleccionado) {
        this.objSeleccionado = objSeleccionado;
    }

}
